// const { app, BrowserWindow, ipcMain } = require('electron');
// const path = require('path');
// const https = require('https');
//
// // 获取早报数据的函数
// function fetchZaobao() {
//     return new Promise((resolve, reject) => {
//         const postData = JSON.stringify({
//             token: 'ycd0krwbhl5v2w6iafblj94y5vzqdj',
//             format: 'json'
//         });
//
//         const options = {
//             hostname: 'v3.alapi.cn',
//             port: 443,
//             path: '/api/zaobao',
//             method: 'POST',
//             headers: {
//                 'Content-Type': 'application/json',
//                 'Content-Length': Buffer.byteLength(postData)
//             },
//             // 忽略 SSL 证书验证（仅用于开发环境）
//             rejectUnauthorized: false
//         };
//
//         const req = https.request(options, (res) => {
//             let data = '';
//
//             res.on('data', (chunk) => {
//                 data += chunk;
//             });
//
//             res.on('end', () => {
//                 try {
//                     const result = JSON.parse(data);
//                     resolve(result);
//                 } catch (e) {
//                     reject(e);
//                 }
//             });
//         });
//
//         req.on('error', (e) => {
//             reject(e);
//         });
//
//         req.write(postData);
//         req.end();
//     });
// }
//
// // 创建窗口函数
// function createWindow() {
//     const mainWindow = new BrowserWindow({
//         width: 1000, // 窗口宽度
//         height: 700, // 窗口高度
//         webPreferences: {
//             preload: path.join(__dirname, 'preload.js'), // 关联预加载脚本
//             contextIsolation: true, // 开启上下文隔离（安全最佳实践）
//             nodeIntegration: false // 禁用 Node 集成（默认禁用，增强安全性）
//         }
//     });
//
//     // 加载应用界面（本地 HTML 文件）
//     mainWindow.loadFile('index.html');
//
//     // 可选：打开开发者工具（调试用）
//     // mainWindow.webContents.openDevTools();
// }
//
// // 处理来自渲染进程的早报请求
// ipcMain.handle('fetch-zaobao', async () => {
//     try {
//         const result = await fetchZaobao();
//         return result;
//     } catch (error) {
//         console.error('获取早报失败:', error);
//         return { code: -1, msg: error.message };
//     }
// });
//
// // 应用就绪后创建窗口
// app.whenReady().then(() => {
//     createWindow();
//
//     // Mac 特有：应用关闭所有窗口后，点击 Dock 图标重新创建窗口
//     app.on('activate', () => {
//         if (BrowserWindow.getAllWindows().length === 0) createWindow();
//     });
// });
//
// // 关闭所有窗口后退出应用（Windows/Linux），Mac 会保留应用在 Dock
// app.on('window-all-closed', () => {
//     if (process.platform !== 'darwin') app.quit();
// });

const { app, BrowserWindow, Tray, nativeImage, Menu } = require('electron');
const path = require('path');

let mainWindow, tray;

function createWindow() {
    // 创建系统托盘（注意：确保同级目录有electron_white.png图片）
    const trayIcon = nativeImage.createFromPath(path.join(__dirname, 'electron_white.png'));
    tray = new Tray(trayIcon);

    // 创建托盘右键菜单
    const trayMenu = Menu.buildFromTemplate([
        { 
            label: '显示窗口', 
            click: () => {
                mainWindow.show(); // 显示窗口
                mainWindow.focus(); // 聚焦窗口
            } 
        },
        { type: 'separator' }, // 分隔线
        { 
            label: '退出应用', 
            click: () => {
                // 退出前清理托盘和窗口
                tray.destroy();
                mainWindow.destroy();
                app.quit();
            } 
        }
    ]);
    tray.setContextMenu(trayMenu); // 绑定菜单到托盘


    // 创建主窗口
    mainWindow = new BrowserWindow({
        width: 800,
        height: 600,
        title: 'Bing桌面版', // 窗口标题
        // 可选：添加窗口图标（替换为你的图标路径）
        // icon: path.join(__dirname, 'window_icon.png'),
        webPreferences: {
            nodeIntegration: false, // 禁用node集成（安全最佳实践）
            contextIsolation: true // 启用上下文隔离（安全最佳实践）
        }
    });

    // 适配macOS窗口按钮
    mainWindow.setWindowButtonVisibility(true);

    // 加载必应首页
    mainWindow.loadURL('https://www.electronjs.org/zh/docs/latest/');


    // 窗口关闭时最小化到托盘（而非直接退出）
    mainWindow.on('close', (e) => {
        // 仅在用户主动退出时才真正关闭（避免托盘菜单"退出"被拦截）
        if (app.quitting) {
            mainWindow = null;
        } else {
            e.preventDefault(); // 阻止默认关闭行为
            mainWindow.hide(); // 隐藏窗口到托盘
        }
    });


    // 点击托盘图标切换窗口显示/隐藏
    tray.on('click', () => {
        if (mainWindow.isVisible()) {
            mainWindow.hide();
        } else {
            mainWindow.show();
            mainWindow.focus();
        }
    });


    // 可选：窗口隐藏时在托盘显示提示
    mainWindow.on('hide', () => {
        tray.displayBalloon({
            title: '应用已最小化',
            content: '点击托盘图标恢复窗口'
        });
    });
}

// 应用就绪后创建窗口
app.whenReady().then(createWindow);

// 处理不同平台的窗口关闭逻辑
app.on('window-all-closed', () => {
    // macOS：应用通常在所有窗口关闭后仍保持运行
    if (process.platform !== 'darwin') {
        app.quit();
    }
});

// macOS：点击dock图标时重新创建窗口
app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
        createWindow();
    } else {
        mainWindow.show();
    }
});

// 标记应用是否正在退出（用于区分关闭窗口和退出应用）
app.on('before-quit', () => {
    app.quitting = true;
});